﻿

using AppGISENA.AccesoDatos;
using AppGISENA.ObjetosNegocio;
using AppGISENA.UIServicios.ServiciosRemotos;
using System;
using System.Collections.Generic;
//using System.EnterpriseServices;
using System.Linq;
using System.Text;
using System.Threading.Tasks;




namespace AppGISENA.UIServicios
{


    
    public interface IUnidadProductivaDataService
    {

        ///SERVICIOS DE SOFIA PLUS
        /// <summary>
        /// Traer unidad productiva de SOFIAPLUS por codigo de UP
        /// </summary>
        /// <param name="codup"></param>
        /// <returns></returns>
       List<SOFIA> getUPSofiaRemotaById(string codup);
        /// <summary>
        /// listar unidad productiva por codigo de UP
        /// </summary>
        /// <param name="codup"></param>
        /// <returns></returns>
       List<UP_Sofia> getListUPSofiaById(long codup);

      // List<instructor> getlistRemoteInstructor(long codup); ASI SERIA LA ORIGINAL
        //SIMULAR BUSCAR INSTRUCTORES
       List<Instructor> getlistRemoteInstructor(); 
       
        /// <summary>
        /// Crer Caracterizacion UP en gisena
        /// </summary>
        /// <param name="unidadproductivaBo"></param>
        /// <returns></returns>
        void CreateUnidadProductiva(CaracterizacionBo unidadproductivaBo);

        /// <summary>
        /// Crear up en Gisena UP_Sofia, lo que se trae de SofiaPlus se guarda 
        /// A traves de esta entidad de negocio
        /// </summary>
        /// <param name="upsofiaBo"></param>
        void CreateUPSofia(UnidadProductivaSofiaBo upsofiaBo);

        /// <summary>
        /// Crear la localizacion y otras caracteristicas 
        /// de la UP en GISENA.       
        /// </summary>
        /// <param name="codup"></param>
        /// <returns></returns>
       void CreateUPLocalizacion(UpLocalizacionBO localizacionup);
       

       

        /// <summary>
        /// obtener la caracterizacion por codigo de UP
        /// </summary>
        /// <param name="codup"></param>
        /// <returns></returns>
        UPSofiaCaracterizacionBO getUPSofiaById(long codup);

        /// <summary>
        /// obtener Up Gisena caracterizada por codigo de UP
        /// </summary>
        /// <param name="codup"></param>
        /// <returns></returns>
        CaracterizacionBo getUPCaracterizadaById(long codup);


        /// <summary>
        /// crear socio de up, info tomada de sofia y creada en Gisena
        /// </summary>
        /// <returns></returns>
        void CreateSocio(socioBo socioup);
        /// <summary>
        /// Crear asesor de la UP
        /// </summary>
        /// <param name="asesorup"></param>
        void CreateAsesor(asesorBO asesorup);



        /// <summary>
        /// crear produccion de la up
        /// </summary>
        /// <param name="produccionbo"></param>
        void CreateProduccion(ProduccionBo produccionbo);

        void CreateVincularAsesores(VincularAsesorBo vincularasesorbo);
        /// <summary>
        /// Listar todos los productos
        /// </summary>
        /// <returns></returns>
      //  List<productosOfertadosGrid> listarGridProductoOfertado(long codup);

        List<productosOfertadosGrid> listarGridProductoOfertado(long codup);
        /// <summary>
        /// listar asesores por codigo de UP
        /// </summary>
        /// <param name="CodUP"></param>
        /// <returns></returns>
        asesorBO GetAsesorByCodUP(long CodUP);

        /// <summary>
        /// listar todos los productos finales
        /// </summary>
        /// <returns></returns>
        List<ProductosBO> GetProductos();


        /// <summary>
        /// listar tipos de rol de asesores
        /// </summary>
        /// <returns></returns>
        List<TipoRolAsesorBo> GetRolasesor();


       


        /// <summary>
        /// borarr objeto obtenido por id
        /// </summary>
        /// <param name="id"></param>
        void DeleteProductoOfertado(int id);
       
      
      
        List<CaracterizacionBo> GetUPCaracterizacion();
       // TransactionStatus AdicionarProductoPpal(productosOfertadosBO productosofertados);
        



        /// <summary>
        /// Adicionar los productos ofertado de la UP
        /// </summary>
        /// <param name="productosofertados"></param>
        void CreateProductoOfertado(productosOfertadosBO productosofertados);

      /// <summary>
      /// listar Tipo de UP
      /// </summary>
      /// <returns></returns>
        List<TipoUPBO> GetTipoUP();
        /// <summary>
        /// listar estados de la UP
        /// </summary>
        /// <returns></returns>


        ///Listar unidades de medida
        List<UnidadMedidaBo> getListUnidadMedida();
        
        
        ///listar tipo certificacion
        List<TipoCertificacionBO> getListTipoCertifica();
        productosOfertadosBO getProductoOfertadoByID(int codproducOfertado);
      
        List<EstadoUPBO> GetEstadoUP();
        List<categoriaBO> GetCategoriaUP();
            /// <summary>
            /// listar productos ofertados
            /// </summary>
            /// <returns></returns>
        List<productosOfertadosBO> GetProductoUP();
      //  productosOfertadosBO getproductoOfertadoById(long codUP);
        List<UnidadProductivaSofiaBo> GetUpSofia();

     //   IQueryable getAprendizSofiaByCodUP(string codup);




        
    }
}
